#include "Sys_RCC.h"
#include "stm32f10x.h"

void Sys_SetRcc(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_DeInit();                                            //将外设RCC寄存器重设为缺省值?*/ 
  RCC_HSICmd(ENABLE); 
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET);        //等待HSI就绪 
  RCC_HCLKConfig(RCC_SYSCLK_Div1);                         //设置AHB时钟（HCLK）?RCC_SYSCLK_Div1——AHB时钟=系统时*/
  RCC_PCLK2Config(RCC_HCLK_Div1);                          //设置高速AHB时钟（PCLK2)RCC_HCLK_Div1——APB2时钟=HCLK*/
  RCC_PCLK1Config(RCC_HCLK_Div2);                          //设置低速AHB时钟（PCLK1）RCC_HCLK_Div2——APB1时钟=HCLK/2*/
  FLASH_SetLatency(FLASH_Latency_2);                       //设置FLASH存储器延时时钟周期数FLASH_Latency_22延时周期*/
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //选择FLASH预取指缓存的模,预取指缓存使能*/ 
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16);     //设置PLL时钟源及倍频系数，频率为8/2*16=64Mhz*/
  RCC_PLLCmd(ENABLE);                                      //使能PLL?*/ 
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);        //检查指定的RCC标志位(PLL准备好标志)设置与否*/
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);               //设置系统时钟（SYSCLK）?*/
  while(RCC_GetSYSCLKSource()!=0x08);                      //0x08：PLL作为系统时钟?*/ 
	
	/*********对外部晶振的接口进行设置，IO拉低，降低功耗***********/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);  //打开重映射时钟，并打开重映射后的IO口
	GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE);                                //IO口重映射开启
	
	GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0 | GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOD,&GPIO_InitStructure);
	GPIO_ResetBits(GPIOD,GPIO_Pin_0 | GPIO_Pin_1);
}











